var xmlurl = "http://localhost:8888/CPAnaylizer/frame";
  // 创建XMLHttpRequest对象  
var http = createRequestObject();
/* *背景资料 1：
      XMLHttpRequest对象的历史
     XMLHttpRequest类首先由Internet Explorer以ActiveX对象引入，被称为XMLHTTP。 后来Mozilla、Netscape、Safari和其他浏览器也提供了
       XMLHttpRequest类，不过它们创建XMLHttpRequest类的方法不同。IE的版本不同，创建XMLHttpRequest也不同。*/
  
  //  解析XML获取RSS信息  
sendRequest();
/**#############################
  **##创建符合当前浏览器的XMLHttpRequest对象#
  **#############################**/
/* *背景资料2：
    XMLHttpRequest对象创建方法:
    IE:
      xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP.3.0"); //3.0或4.0, 5.0 
      xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP");
      xmlhttp_request = new ActiveXObject("Microsoft.XMLHTTP");
    Other:
      xmlhttp_request = new XMLHttpRequest();*/
function createRequestObject() {
	var xmlhttp;
    
    //  创建适合IE的  XMLHttpRequest     
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		usewin = "msxml";
	}
	catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			usewin = "microsoft";
		}
		catch (e) {
			xmlhttp = null;
		}
	}
    
    //  创建适合其他浏览器的XMLRequest    
	if (!xmlhttp && typeof XMLHttpRequest != "undefined") {
		xmlhttp = new XMLHttpRequest();
		usewin = "undefined";
	}
	return xmlhttp;
}
/**##########################################
   **##通过XMLHttpRequest取得RSS文件数据，解析XML文件，显示结果#
   **##########################################**/
function sendRequest() {

// XMLHttpRequest对象的处理过程
	try {
    // 发送远程请求
		http.open("GET", xmlurl, true);
		/* *背景资料3：
        open()：
      第一个参数是HTTP请求方式-GET，POST或任何服务器所支持的您想调用的方式。                   按照HTTP规范，该参数要大写；否则，某些浏览器(如Firefox)可能无法处理请求。 
      第二个参数是请求页面的URL。
      第三个参数设置请求是否为异步模式。如果是TRUE，JavaScript函数将继续执行，而不等待服务器响应。这就是"AJAX"中的"A"(异步)。
    */

      // 设置服务器的响应header
		http.setRequestHeader("Content-Type", "text/xml");
		/*背景资料4：
    如果服务器的响应没有XML mime-type header，某些Mozilla浏览器可能无法正常工作。 
    为了解决这个问题，如果服务器响应的header不是text/xml，可以调用其它方法修改该header。
    xmlhttp_request = new XMLHttpRequest();
    xmlhttp_request.overrideMimeType('text/xml');
   */
    // 响应结束后，处理函数设置    
		http.onreadystatechange = handleResponse;
		/*背景资料5：
    xmlhttp_request.onreadystatechange =FunctionName;
    FunctionName是用JavaScript创建的函数名，注意不要写成FunctionName()，
    当然我们也可以直接将JavaScript代码创建在onreadystatechange之后，例如：
        xmlhttp_request.onreadystatechange = function(){
        // JavaScript代码段
        };
   */
    //  向服务器发送数据    
		http.send(null);
		/*背景资料6：
     send()方法的参数可以使任何你希望传递给服务器的数据，数据应该为如下格式的查询串：
        name=value&anothername=othervalue&so=on
   */
	}
	catch (e) {
     // caught an error    
		alert("Request send failed.");
	}
	finally {
	}
}
/**######################
   **##解析XML文件，在页面显示结果#
   **#####################**/
function handleResponse() {
	try {
        //  当服务器响应已经接收完毕并且HTTP服务器响应成功时进行进一步处理          
		if ((http.readyState == 4) && (http.status == 200)) {
			/*背景资料7：
        1    响应后状态 readyState：
        只有当一个完整的服务器响应已经收到了，函数才可以处理该响应。XMLHttpRequest 提供了readyState属性来对服务器响应进行判断。
        readyState的取值如下： 
　　        0 (未初始化) 
　　        1 (正在装载) 
　　        2 (装载完毕) 
　　        3 (交互中) 
　　        4 (完成)
        所以只有当readyState=4时，一个完整的服务器响应已经收到了，函数才可以处理该响应。
         if (http_request.readyState == 4) {
        // 收到完整的服务器响应
        } else {
        // 没有收到完整的服务器响应                  参见：微软资料

        2   HTTP服务器响应的情况代码 status：
        如：404 = "文件末找到" 、200 ="成功"   参见：W3C的网站
        }   */
        
        // 以XMLDocument对象方式返回响应        
			var response = http.responseXML.documentElement;
			/*背景资料8：
          响应后返回值
            有两种方式可以得到这些数据：
            (1) 以文本字符串的方式返回服务器的响应 ，服务器的响应作为一个文本串返回 
                如：http_request.responseText
            (2) 以XMLDocument对象方式返回响应 
                如：http_request.responseXML
        */
	    updateByXML(response);
		}
	}
	catch (e) {
		alert("Response failed.");
	}
	finally {
	}
}

